/* 
 * File:   Student.h
 * Author: Allison
 *
 * Created on September 30, 2013, 5:09 PM
 */

//  Description: The Student class describes a student entity and contains
//  attributes first name, last name, student ID, and tuition amount.
//  It also contains the accessors and the modifiers of each attribute
//  as well as its toString and compareTo method

#ifndef STUDENT_H
#define	STUDENT_H

#include <iostream>
#include <string>
#include <vector>
#include "Course.h"
using namespace std;

class Student {
public:
    Student(string firstName, string lastName, string studentID, bool res, double rate);
    virtual ~Student();
    void setFirstName(string firstName);
    string getFirstName() const;
    void setLastName(string lastName);
    string getLastName() const;
    void setStudentID(string studentID);
    string getStudentID() const;
    void setRate(double rate);
    double getRate() const;
    
    void setTuitionAmount(double tuitionAmount);
    double getTuitionAmount() const;
    
    virtual void computeTuition();
    int computeCreditNum();
    
    int courseExists(string courseName, string days, string time);
    bool enrollCourse(Course c);
    bool cancelCourse(Course c);

    int compareTo(Student other);
    string toString();
    string currencyFormat(double amount);

protected:
    string firstName;
    string lastName;
    string studentID;
    bool resident;
    double rate;
    double tuitionAmount;
    int creditUpperbound;
    vector<Course> courseList;

};

#endif	/* STUDENT_H */
